In [5]:
def word_lengths(phrase):
# return map(lambda word: len(word), [word for word in phrase.split()])
return map(lambda word: len(word), phrase.split())
In [6]:
word_lengths('How long are the words in this phrase')
Out[6]:
In [11]:
def digits_to_num(digits):
return reduce(lambda x,y: 10*x+y, digits)
In [12]:
digits_to_num([3,4,3,2,1])
Out[12]:
In [20]:
def filter_words(word_list, letter):
# first attempt
#return filter(lambda x: x == letter, [word[0] for word in word_list])
return filter(lambda x: x[0] == letter, [word for word in word_list])
# not this is reduntant. the following will just do
# return filter(lambda word: word[0]==letter,word_list)
In [21]:
l = ['hello','are','cat','dog','ham','hi','go','to','heart']
filter_words(l,'h')
Out[21]:
In [22]:
def concatenate(L1, L2, connector):
return [x+connector+y for x,y in zip(L1,L2)]
In [23]:
concatenate(['A','B'],['a','b'],'-')
Out[23]:
In [30]:
def d_list(L):
dout = {}
for item,val in enumerate(L):
dout[val] = item
return dout
# first attempt return list
#return [{val:item} for item,val in enumerate(L)]
# or simply
# return {key:value for value,key in enumerate(L)}
# use of dictionary comprehension is surprising
In [31]:
d_list(['a','b','c'])
Out[31]:
In [59]:
def count_match_index(L):
return len(filter(lambda x: x[0]==x[1], [pair for pair in enumerate(L)]))
# attempts
# return [pair for pair in enumerate(L)]
#return filter(lambda[pair for pair in enumerate(L)])
# portilla's answer
# return len([num for count,num in enumerate(L) if num == count])
In [60]:
count_match_index([0,2,2,1,5,5,6,10])
Out[60]: